<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<script>
    var empty_object = {};
    var stooge = {
        "frist-name":"Jerome",
        "last-name":"Howard",
    };
    
    var flight = {
        airline: "Ocenic",
        number: 82,
        departure:{
            IAta:"SYD",
            time:"2020-09-22 14:22",
            city: "Sydney",
        },
        arrival:{
            IATA:"Lax",
            time:"20200730",
            city:"Los Angeles",
        }
    };
    //console.log(flight);

    /**
    flight.equiment //undefined
    fileght.equiment.model //throw TypeError
    fileght.equiment && fileght.equiment.model //undefined
    **/
    //对象更新
    /*
      如果属性名已存在，这个属性值被替换
      如果事情没有这个属性，那么这个属性就被扩展。
     */

/*函数 函数即对象
对象字母量产生对象连接到 object.prototype
函数对象连接到 Funtion.prototype
//每个函数还会接收两个附件的参数：
this arguments
js中有4种调用模式
方法调用模式
函数调用模式
构造器调用模式
apply调用模式  这些模式如何初始化关键参数this上存在差异
*/
//通过 函数字面量来创建
var add = function(a, b){
    return a+b;
};
//console.log(add(1,2));
var myObject = {
    value:0,
    increment:function(inc){
        this.value += typeof inc === 'number'?inc:1;
    }
};

myObject.increment();
//document.writeln(myObject.value);       //1
myObject.increment(2);
//document.writeln(myObject.value);       //3
//函数调用模式
myObject.double = function(){
    var that = this;
    var helper = function(){
        that.value = add(that.value,that.value)
    };
    helper();
}
myObject.double();
//document.writeln(myObject.value);
//构造器调用模式
//创建一个名为Quo的构造函数
var Quo = function(string){
    this.status = string;
}
//给Quo的所有实列提供一个名为 get_status的公共方法。
Quo.prototype.get_status = function(){
    return this.status;
}
var myQuo = new Quo("confused");
//document.writeln(myQuo.get_status());
//Apply调用模式

//因为函数式

</script>
<body>
    
</body>
</html>